using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System;

namespace MyUtils
{
	/// <summary>
	/// Helper interface used to hide the base <see cref="TTarget:System.Object" /> 
	/// members from the fluent API to make it much cleaner 
	/// in Visual Studio intellisense.
	/// </summary>
	[EditorBrowsable(EditorBrowsableState.Never)]
	public interface IHideObjectMembers
	{
		/// <summary />
		[EditorBrowsable(EditorBrowsableState.Never)]
		bool Equals(object value);

		/// <summary />
		[EditorBrowsable(EditorBrowsableState.Never)]
		int GetHashCode();

		/// <summary />
		[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
		[SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "GetType")]
		[EditorBrowsable(EditorBrowsableState.Never)]
		Type GetType();

		/// <summary />
		[EditorBrowsable(EditorBrowsableState.Never)]
		string ToString();
	}
}